package com.zwh.modules.scheduler.job;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

/**
 * @Author zwh
 * @Date 2019/11/1 15:17
 **/

public class ProjectStatusUpdateJob implements Job {
//    @Autowired
//    ProjectService projectService;


    private void before() {
        System.out.println("项目更新任务执行");
    }

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        before();
        System.out.println("开始：" + System.currentTimeMillis());
        // TODO 业务
        //定时处理项目状态数据
//        WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext();
        //SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
        /*WebApplicationContext context = null;
        try {
            context = (WebApplicationContext)jobExecutionContext.getScheduler().getContext().get(QuartzServletContextListener.MY_CONTEXT_NAME);
        } catch (SchedulerException e) {
            e.printStackTrace();
        }*/
//        ProjectService projectService = (ProjectService)context.getBean("projectService");
//        Project project = new Project();
//        project.setStatus("0");
//
//        Date curDate = new Date();
//        List<Project> projectList = projectService.findList(project);
//        Project updateProject=new Project();
//        for (Project projectItem : projectList) {
//            if(projectItem.getStartDate()==null||projectItem.getEndDate()==null){
//                //跳过开始结束日期为空的数据。
//                continue;
//            }
//            try {
//                String dbProjectStatus=projectItem.getProjectStatus();
//                int i = 0;
//                //当前日期-项目开始日期
//                i = DateUtils.daysBetween(projectItem.getStartDate(), curDate);
//                int projectProgress = projectItem.getProjectProgress()==null?0:projectItem.getProjectProgress();
//                //项目结束日期-项目开始日期
//                int j = DateUtils.daysBetween(projectItem.getStartDate(), projectItem.getEndDate());
//                if(j<=0){
//                    j=1;
//                }
//                //（当前日期-项目开始日期）/(项目结束日期-项目开始日期）
//                int k = i / j;
//                if (projectProgress>=(k*100)&&(k*100)>=projectProgress-10) {
//                    //正常状态：项目进度>=（当前日期-项目开始日期）/(项目结束日期-项目开始日期）>=(项目进度-10%)
//                    projectItem.setProjectStatus(ProjectConsts.PROJECT_STATUS_PROJECT_NORMAL);
//                } else {
//                    //将要超时状态：(当前日期-项目开始日期)/(项目结束日期-项目开始日期)-10% > 项目进度
//                    if ((k * 100 - 10) > projectProgress) {
//                        projectItem.setProjectStatus(ProjectConsts.PROJECT_STATUS_PROJECT_WILLOVER);
//                    }
//
//                    /**
//                     * 超时状态: 项目进度<100%时，当前日期>项目结束日期；
//                     项目进度=100%时，最后实际完成时间>项目结束日期
//                     */
//                    boolean realLarge = projectItem.getRealEndDate() == null ? true : DateUtils.daysBetween(projectItem.getRealEndDate(), projectItem.getEndDate()) < 0;
//                    if ((projectProgress < 100 && j < 0) || (projectProgress == 100 && realLarge)) {
//                        projectItem.setProjectStatus(ProjectConsts.PROJECT_STATUS_PROJECT_OVERING);
//                    }
//                }
//                if(dbProjectStatus!=null&&dbProjectStatus.equals(projectItem.getProjectStatus())){
//                    //项目状态未改变，不更新
//                    continue;
//                }
//                updateProject.setId(projectItem.getId());
//                updateProject.setProjectStatus(projectItem.getProjectStatus());
//                projectService.update(updateProject);
//
//            } catch (ParseException e) {
//                e.printStackTrace();
//            }
//
//
//        }
//        System.out.println("结束：" + System.currentTimeMillis());
        after();
    }

    private void after() {
        System.out.println("任务执行之后");
    }

}
